package itcz.example.pattern.create_action.singleton.demo5;

/**
 * @ClassName: Singleton
 * @Author: ITCZ
 * @Date: 2025-04-21
 * @Description: 懒汉式3(双重检查锁方式 + volatile)
 */
public class Singleton {
    // 创建一个私有的静态变量，用于存储唯一实例
    private static volatile Singleton singleton;

    // 私有构造方法，防止被外部实例化
    private Singleton() {

    }

    public static Singleton getInstance() {
        // 多线程模式性下，存在空指针异常需要使用 volatile 修饰 singleton对象
        if (singleton == null) {
            synchronized (Singleton.class) {
                if (singleton == null) {
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }
}
